From: kaf24@firebug.cl.cam.ac.uk Date: Wed, 19 Apr 2006 21:28:22 +0000 (+0100) Subject: x86/64 e820-parse-and-map code should skip low 1GB now as that X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~16117^2~67 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/success//%22http:/www.example.com/cgi/success/?a=commitdiff_plain;h=67d4dc86246ab93b8d51919b2fe49f5eff65efc5;p=xen.git x86/64 e820-parse-and-map code should skip low 1GB now as that is mapped by the boot code. Signed-off-by: Keir Fraser --- diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c index 88e667b1ec..8569b5e8cf 100644 --- a/xen/arch/x86/setup.c +++ b/xen/arch/x86/setup.c @@ -321,7 +321,7 @@ void __init __start_xen(multiboot_info_t *mbi) #if defined (CONFIG_X86_64) /* * x86/64 maps all registered RAM. Points to note: - * 1. The initial pagetable already maps low 64MB, so skip that. + * 1. The initial pagetable already maps low 1GB, so skip that. * 2. We must map *only* RAM areas, taking care to avoid I/O holes. * Failure to do this can cause coherency problems and deadlocks * due to cache-attribute mismatches (e.g., AMD/AGP Linux bug). @@ -329,13 +329,14 @@ void __init __start_xen(multiboot_info_t *mbi) { /* Calculate page-frame range, discarding partial frames. */ unsigned long start, end; + unsigned long init_mapped = 1UL << (30 - PAGE_SHIFT); /* 1GB */ start = PFN_UP(e820.map[i].addr); end = PFN_DOWN(e820.map[i].addr + e820.map[i].size); /* Clip the range to above 64MB. */ - if ( end < (64UL << (20-PAGE_SHIFT)) ) + if ( end < init_mapped ) continue; - if ( start < (64UL << (20-PAGE_SHIFT)) ) - start = 64UL << (20-PAGE_SHIFT); + if ( start < init_mapped ) + start = init_mapped; /* Request the mapping. */ map_pages_to_xen( PAGE_OFFSET + (start << PAGE_SHIFT),